#ifndef __FT5446U_H__
#define __FT5446U_H__

#ifdef __cplusplus
extern "C" {
#endif//__cplusplus

#include "main.h"

// I2C读写命令
#define FT_CMD_WR 0X70 // 写命令
#define FT_CMD_RD 0X71 // 读命令

// FT5206 部分寄存器定义
#define FT_DEVIDE_MODE 0x00    // FT5206模式控制寄存器
#define FT_REG_NUM_FINGER 0x02 // 触摸状态寄存器
#define FT_TP1_REG 0X03        // 第一个触摸点数据地址
#define FT_TP2_REG 0X09        // 第二个触摸点数据地址
#define FT_TP3_REG 0X0F        // 第三个触摸点数据地址
#define FT_TP4_REG 0X15        // 第四个触摸点数据地址
#define FT_TP5_REG 0X1B        // 第五个触摸点数据地址

#define FT_ID_G_LIB_VERSION 0xA1  // 版本
#define FT_ID_G_MODE 0xA4         // FT5206中断模式控制寄存器
#define FT_ID_G_THGROUP 0x80      // 触摸有效值设置寄存器
#define FT_ID_G_PERIODACTIVE 0x88 // 激活状态周期设置寄存器

#define TP_PRES_DOWN 0x80 // 触屏被按下
#define TP_CATH_PRES 0x40 // 有按键按下了
#define CT_MAX_TOUCH 5    // 电容屏支持的点数,固定为5点

#define ACTIVE_WIDTH 800
#define ACTIVE_HEIGHT 480

// 触摸屏控制器
typedef struct
{
    //    uint8_t (*init)(void);			//初始化触摸屏控制器
    //    uint8_t (*scan)(uint8_t);				//扫描触摸屏.0,屏幕扫描;1,物理坐标;
    //    void (*adjust)(void);		//触摸屏校准
    uint16_t x[CT_MAX_TOUCH]; // 当前坐标
    uint16_t y[CT_MAX_TOUCH]; // 电容屏有最多5组坐标,电阻屏则用x[0],y[0]代表:此次扫描时,触屏的坐标,用
    uint8_t sta;              // 笔的状态
    float xfac;
    float yfac;
    short xoff;
    short yoff;
    uint8_t touchtype;
    bool user_begin; //触发中断可以扫描，比一直扫描效率高一点
} _m_tp_dev;
extern _m_tp_dev tp_dev; // 触屏控制器在touch.c里面定义


void FT5446U_Init(void);
uint8_t FT5446U_Scan(uint8_t mode);

#ifdef __cplusplus
}
#endif//__cplusplus

#endif //__FT5446U_H__


